package by2019;

import java.util.LinkedList;
import java.util.List;

/*
 * 给出n代表生成括号的对数
 * 写个函数，使其能够生成所有可能的有效的括号的组合
 */
public class 括号生成 {

	
	public static void main(String[] args) {
		System.out.println(generateParenthesis(3));
	}
	
	 public static List<String> generateParenthesis(int n) {
		List<String> list = new LinkedList<String>() ;
		 gen(n, n, "", list);
		 return list ;
	 }
	 public static void gen(int left, int right, String result, List<String> list) {
		 if(left==0 && right==0) {
			 list.add(result) ;
			 System.out.println("添加到list："+result);
			 return ;
		 }
		 if(left>0) {
			 gen(left-1, right, result+"(", list);
		 }
		 if(left<right && right>0) {
			 gen(left, right-1, result+")",list);
		 }
	 }

}
